package com.zyx.groovydemo.closure

/**
 * @author zyx
 * @since 2022/5/7 23:21
 * desc: 基本数据类型结合闭包的使用
 */
// 利用闭包计算阶乘
def fact1(int number) {
    int result = 1
    1.upto(number, { num -> result *= num })
    return result
}

def fact2(int number) {
    int result = 1
    // 闭包函数可以提取到括号外单独书写
    number.downto(1){ num -> result *= num }
    return result
}

println fact1(5)
println fact2(5)

// 闭包计算累加值
def cumsum(int number) {
    int result = 0
    number.times {
        num -> result += num
    }
    return result
}
println cumsum(101)